#!/bin/bash

# ================================================
# Fedora 一键优化脚本（AMD 6800H + Radeon 680M）
# 作者：AI助手
# 功能：配置国内镜像、启用硬件解码、安装常用软件、优化体验
# 使用方法：保存为 fedora-optimize.sh，chmod +x，然后 sudo ./fedora-optimize.sh
# ================================================

echo "🚀 开始 Fedora 一键优化..."
echo "ℹ️ 请确保你已连接网络，并且有管理员权限。"


# ============================
# 第一步：配置清华大学镜像源（提升下载速度）
# ============================
echo "🌐 配置清华镜像源..."
# sudo sed -i 's|^metalink=|#metalink=|g' /etc/yum.repos.d/fedora*.repo
# sudo sed -i 's|^#baseurl=http://download.example.org/fedora|baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora|g' /etc/yum.repos.d/fedora*.repo
# 在安装完 Fedora 工作站（Workstation） 后，推荐的做法是：先配置国内加速镜像源，再执行 sudo dnf update --refresh -y 更新系统
# 中国科技大学 Fedora 加速镜像 https://mirrors.ustc.edu.cn/help/fedora.html
# 配置dnf以加快软件下载速度（启用最快的镜像）
sudo sed -e 's|^metalink=|#metalink=|g' \
         -e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://mirrors.ustc.edu.cn/fedora|g' \
         -i.bak \
         /etc/yum.repos.d/fedora.repo \
         /etc/yum.repos.d/fedora-updates.repo
# ls /etc/yum.repos.d
# cat /etc/yum.repos.d/fedora.repo
# cat /etc/yum.repos.d/fedora-updates.repo
# 修改还原
# sudo mv /etc/yum.repos.d/fedora.repo.bak /etc/yum.repos.d/fedora.repo
# sudo mv /etc/yum.repos.d/fedora-updates.repo.bak /etc/yum.repos.d/fedora-updates.repo

# 中国科技大学 RPMFusion 镜像源 	https://mirrors.ustc.edu.cn/help/rpmfusion.html
# 使用下列命令（在 bash 或兼容 shell 中），可以同时启用其 free 和 nonfree 软件源
sudo dnf install -y https://mirrors.ustc.edu.cn/rpmfusion/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install -y https://mirrors.ustc.edu.cn/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
# 替换源地址
sudo sed -e 's|^metalink=|#metalink=|g' \
         -e 's|^#baseurl=http://download1.rpmfusion.org|baseurl=https://mirrors.ustc.edu.cn/rpmfusion|g' \
         -i.bak \
         /etc/yum.repos.d/rpmfusion*.repo
# ls /etc/yum.repos.d
# cat /etc/yum.repos.d/rpmfusion-free.repo
# cat /etc/yum.repos.d/rpmfusion-free-updates.repo
# 修改还原
# sudo mv /etc/yum.repos.d/rpmfusion-free.repo.bak /etc/yum.repos.d/rpmfusion-free.repo
# sudo mv /etc/yum.repos.d/rpmfusion-free-updates.repo.bak /etc/yum.repos.d/rpmfusion-free-updates.repo
# sudo mv /etc/yum.repos.d/rpmfusion-nonfree.repo.bak /etc/yum.repos.d/rpmfusion-nonfree.repo
# sudo mv /etc/yum.repos.d/rpmfusion-nonfree-updates.repo.bak /etc/yum.repos.d/rpmfusion-nonfree-updates.repo
# sudo mv /etc/yum.repos.d/rpmfusion-nonfree-nvidia-driver.repo.bak /etc/yum.repos.d/rpmfusion-nonfree-nvidia-driver.repo
# sudo mv /etc/yum.repos.d/rpmfusion-free-updates-testing.repo.bak /etc/yum.repos.d/rpmfusion-free-updates-testing.repo
# sudo mv /etc/yum.repos.d/rpmfusion-nonfree-steam.repo.bak /etc/yum.repos.d/rpmfusion-nonfree-steam.repo
# sudo mv /etc/yum.repos.d/rpmfusion-nonfree-updates-testing.repo.bak /etc/yum.repos.d/rpmfusion-nonfree-updates-testing.repo


# ============================
# 第二步：安装 Flatpak 并添加常用应用
# ============================
echo "📦 开始配置Flatpak加速镜像并添加常用软件..."
# 中国科技大学 Flathub 镜像源 	https://mirrors.ustc.edu.cn/help/flathub.html
# 在已有 flathub 远程源的基础上替换 Flatpak 默认的软件源
# Fedora默认安装了Flatpak，只要配置Flatpak加速镜像即可
sudo dnf install -y flatpak
# flatpak --help
# 添加 Flathub 官方仓库
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# 修改 Flathub 仓库地址为国内镜像
# 2、中科大 Flatpak 镜像源（处于测试阶段） https://mirrors.ustc.edu.cn/help/flathub.html
flatpak remote-modify --user flathub --url=https://mirrors.ustc.edu.cn/flathub
sudo flatpak remote-modify --system flathub --url=https://mirrors.ustc.edu.cn/flathub
# 恢复默认值
# sudo flatpak remote-modify flathub --url=https://dl.flathub.org/repo
# flatpak remotes --show-details
# flatpak update
echo "🐍 你以安装的 flatpak 版本号为：$(flatpak --version)"


# ============================
# 第三步：更新系统（使用新镜像）
# ============================
echo "🔄 更新系统中，请稍候..."
sudo dnf update --refresh -y && sudo flatpak update -y


# ============================
# 第四步：安装多媒体支持包（VA-API 硬件解码）
# ============================
echo "⚙️ 安装 VA-API 和 GStreamer 插件（用于视频硬解）..."
# 安装fedora的多媒体组，以下内容参考 	https://rpmfusion.org/Howto/Multimedia
# 切换到完整的 ffmpeg，使用 swap 命令为替换操作
# FFmpeg-Free 是 Fedora 默认提供的一个受限版本，仅包含开源且无专利限制的编解码器。
# FFmpeg 是一个功能强大的多媒体处理工具集，支持视频、音频的编码、解码、转码、流媒体传输等功能。
# 它支持广泛的编解码器（如 H.264、HEVC、AAC 等），包括一些专利保护的编解码器。 
# Fedora ffmpeg-free 在大多数时候都能正常工作，但有时会遇到版本不匹配的情况。切换到 rpmfusion 提供的 ffmpeg 构建，它得到了更好的支持。您仍然需要按照下一节了解与您可能已安装的软件包相关的其他编解码器或插件。
sudo dnf swap -y ffmpeg-free ffmpeg --allowerasing
# 安装其他编解码器，这将允许使用 gstreamer 框架和其他多媒体软件的应用程序播放其他受限编解码器：
# 以下命令将安装启用 gstreamer 的应用程序所需的补充多媒体包： 
sudo dnf update -y @multimedia --setopt="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin

# 硬件加速编解码器
# 使用 AMD（mesa）的硬件编解码器
# 使用 rpmfusion-free 部分这是从 Fedora 37 及更高版本开始需要的...主要关注 AMD 硬件，因为带有 nouveau 的 NVIDIA 硬件运行不佳 
# Mesa 是一个开源的图形驱动框架，提供了对 OpenGL、Vulkan、VA-API 和 VDPAU 等图形 API 的支持。
# Fedora 默认的 Mesa 驱动遵循严格的开源许可证，因此不包含对某些专利保护的编解码器（如 H.264 和 HEVC）的支持。
# Fedora 默认安装的是开源的 mesa-va-drivers 和 mesa-vdpau-drivers，这些驱动完全符合开源社区的标准，但可能缺少对某些专有编解码器（如 H.264 或 HEVC）的支持。
# RPM Fusion 提供了名为 mesa-*-drivers-freeworld 的替代版本，它们是基于 Mesa 的增强版本，支持更多的专有编解码器（如 H.264 和 HEVC）和性能优化
sudo dnf swap -y mesa-va-drivers mesa-va-drivers-freeworld --allowerasing
sudo dnf swap -y mesa-vdpau-drivers mesa-vdpau-drivers-freeworld --allowerasing
sudo dnf swap -y mesa-vulkan-drivers mesa-vulkan-drivers-freeworld --allowerasing
# 安装 VA-API 和 VDPAU 驱动，一般默认已安装
# dnf list mesa*		# 查看 Mesa 驱动程序 freeworld 和原始驱动程序
# 提供 vainfo 命令的包
sudo dnf install -y libva-utils vulkan-tools
# vainfo
# vainfo | grep -E 'H264|H265'
# vulkaninfo | grep "GPU"


# ============================
# 第六步：安装 power-profiles-daemon（电源管理优化，延长续航）
# ============================
echo "🔋 安装 power-profiles-daemon（笔记本电源优化工具）..."
# power-profiles-daemon（简称 PPD）是一个 现代化的系统级电源管理守护进程，由 Red Hat 开发，专为 GNOME 桌面环境设计。 
# 它是一个轻量级服务，运行在后台，用于管理系统在不同场景下的 性能与功耗平衡。 
# power-profiles-daemon 与 TLP 的功能冲突，两者只能二选一。如果同时安装也只能其中一个会启用生效
# 如果你是普通用户或开发者，使用 Fedora GNOME 桌面，推荐使用 power-profiles-daemon，禁用 TLP。
echo "设置 power-profiles-daemon 优化续航..."
# 是一个 Linux 系统上的守护进程（daemon），用于管理和切换系统的电源性能模式。
sudo dnf install -y power-profiles-daemon
sudo systemctl enable power-profiles-daemon --now
# systemctl status power-profiles-daemon
# powerprofilesctl list      		# 查看可用模式
# powerprofilesctl set performance  	# 设置为性能模式
powerprofilesctl set balanced  		# 恢复平衡模式
# powerprofilesctl set power-saver  	# 设置为节能模式


# ============================
# 第七步：安装 GNOME Tweaks 和扩展支持
# ============================
echo "🛠️ 安装 GNOME Tweaks（自定义桌面）..."
# 安装字体
echo "正在安装额外字体..."
sudo dnf install -y \
adobe-source-han-sans-cn-fonts \
adobe-source-han-serif-cn-fonts \
jetbrains-mono-fonts
# 设置系统字体
gsettings set org.gnome.desktop.interface font-name '思源黑体 CN Medium 12'
gsettings set org.gnome.desktop.interface document-font-name '思源宋体 CN Medium 12'
gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrains Mono Medium 12'
gsettings set org.gnome.desktop.wm.preferences titlebar-font '思源黑体 CN Bold 12'
gsettings set org.gnome.desktop.interface font-antialiasing 'rgba'
gsettings set org.gnome.desktop.interface font-hinting 'slight'
# 安装 ubuntu 的声音主题
# dnf list *-sound-theme
sudo dnf install -y yaru-sound-theme
gsettings set org.gnome.desktop.sound theme-name 'Yaru'
# 系统级目录（所有用户生效）	ls /usr/share/sounds/gnome/default/alerts
# /usr/share/sounds/gnome/default/alerts/
# 用户级目录（仅当前用户生效）	ls ~/.local/share/sounds/
# ~/.local/share/sounds/


# ============================
# 第九步：配置 Firefox 使用硬件解码（VA-API）
# ============================
echo "🔧 配置 Firefox 使用硬件解码..."
sudo dnf install -y gstreamer1-plugin-openh264 mozilla-openh264 mozilla-ublock-origin


# 安装常用应用
echo "📥 安装微信、QQ、Telegram、VS Code、VLC..."
# flatpak 中文官方网站	https://flathub.org/zh-Hans
sudo flatpak install flathub -y com.mattjakeman.ExtensionManager
sudo flatpak install flathub -y com.qq.QQ
sudo flatpak install flathub -y com.tencent.WeChat
sudo flatpak install flathub -y com.google.Chrome
# sudo flatpak install flathub -y com.microsoft.Edge
# Zen 是浏览网页的最佳方式。设计精美，注重隐私，功能丰富。我们关心您的体验，而不是您的数据
sudo flatpak install flathub -y app.zen_browser.zen
# 用于编辑 dconf 数据库的图形化工具
sudo flatpak install flathub -y ca.desrt.dconf-editor
# spotify 在线音乐流媒体服务
sudo flatpak install flathub -y com.spotify.Client
# 网易云音乐 Linux 音乐播放器
sudo flatpak install flathub -y com.github.gmg137.netease-cloud-music-gtk
# 无暇（又名：G4Music）是一款用 GTK4 编写的轻量级音乐播放器，专注于大型音乐收藏
sudo flatpak install flathub -y com.github.neithern.g4music
# Flatseal 是一个可以查看并修改 Flatpak 程序权限的图形工具
sudo flatpak install flathub -y com.github.tchx84.Flatseal
# Warehouse 提供了一个简单的用户界面来控制复杂的 Flatpak 选项，而且完全无需借助命令行
sudo flatpak install flathub -y io.github.flattool.Warehouse
# 一个简单易用的 BitTorrent 客户端。Fragments 可以用来通过 BitTorrent P2P 文件共享协议传输文件，比如视频、音乐或 Linux 发行版的安装镜像
sudo flatpak install flathub -y de.haeckerfelix.Fragments
# 更改 GDM 设置； 应用主题和背景、更改光标主题、图标主题和夜灯设置等
sudo flatpak install flathub -y io.github.realmazharhussain.GdmSettings
# Save Desktop 可让您一键保存当前配置（主题、图标、壁纸、所有桌面环境设置、扩展等）
sudo flatpak install flathub -y io.github.vikdevelop.SaveDesktop
# 以简单的方式进行备份。插入您的 USB 驱动器并让 Pika 为您做其余的事情
sudo flatpak install flathub -y org.gnome.World.PikaBackup
# 轻松地将磁盘映像写入驱动器。选择一个镜像，插入驱动器，就可以开始了
sudo flatpak install flathub -y io.gitlab.adhami3310.Impression
sudo flatpak install flathub -y io.typora.Typora
sudo flatpak install flathub -y md.obsidian.Obsidian
# 轻松管理 AppImages 的实用程序
sudo flatpak install flathub -y it.mijorus.gearlever
# 触手可及的开发工具箱
sudo flatpak install flathub -y me.iepure.devtoolbox
# HTML/CSS/JavaScript 的游乐场
sudo flatpak install flathub -y re.sonny.Playhouse
# Workbench 用于使用 GNOME 技术进行学习和原型设计，无论是第一次修补还是构建和测试 GTK 用户界面
sudo flatpak install flathub -y re.sonny.Workbench
# 一种高级用户工具，允许在 fwupd 支持的设备上更新、重新安装和降级固件
sudo flatpak install flathub -y org.gnome.Firmware
# 查看相关信息： USB设备、磁盘、内存、PCI设备、网络、CPU、主板和BIOS、系统和发行版
sudo flatpak install flathub -y io.github.nokse22.inspector
# Resources 能够查看系统资源的使用情况，并控制正在运行的应用与进程。GNOME 的 libadwaita 使其拥有现代化的界面且易于使用
sudo flatpak install flathub -y net.nokyan.Resources
# 监控系统整体或每个资源的使用情况，和上面的 Resources 功能类似
sudo flatpak install flathub -y io.missioncenter.MissionCenter
# RustDesk 是一种功能齐全的开源远程控制替代方案，用于自托管和安全性，只需最少的配置
sudo flatpak install flathub -y com.rustdesk.RustDesk
# Gtranslator 是一个为 GNOME 桌面环境开发的增强型 gettext po 文件编辑器。它能处理所有形式的 gettext po 文件，并且包含如查找/替换，翻译记忆
sudo flatpak install flathub -y org.gnome.Gtranslator
# 将文件共享到附近的设备，此应用程序允许您通过本地 LAN 网络发送文件和消息
sudo flatpak install flathub -y org.localsend.localsend_app
sudo flatpak install flathub -y com.baidu.NetDisk
# 简单的 Flatpak 商店，它将帮助您以用户友好的方式安装 Flatpak 应用程序。我们为其中一些提供了更好的安装方法
# sudo flatpak install flathub -y org.dupot.easyflatpak
# sudo flatpak install flathub -y io.github.debasish_patra_1987.linuxthemestore
# Bottles 允许您在 Linux 上运行 Windows 软件
sudo flatpak install flathub -y com.usebottles.bottles
# Refine 可帮助你发现 GNOME 中的高级和实验性特性
sudo flatpak install flathub -y page.tesk.Refine
# Apipost = Postman + Swagger + Mock + Jmeter, Backend, frontend, testing
sudo flatpak install flathub -y cn.apipost.apipost
# Discord 是一款免费的多合一消息、语音和视频客户端，可在您的计算机和手机上使用
sudo flatpak install flathub -y com.discordapp.Discord
# Telegram 是市场上最快的消息传递应用程序，通过全球独特的分布式数据中心网络将人们联系起来
sudo flatpak install flathub -y org.telegram.desktop
# 在 Roblox 上玩、聊天和探索，不隶属于 Roblox。研究项目，使用风险自负。使用前请阅读我们网站上的通知
# sudo flatpak install flathub -y org.vinegarhq.Sober
# GIMP 是一个可自由分发的程序，可用于照片的后期处理、图像合成处理和图像出版
# sudo flatpak install flathub -y org.gimp.GIMP
# 功能强大且易于使用的屏幕截图软件，具有具有高级功能的内置编辑器
# sudo flatpak install flathub -y org.flameshot.Flameshot
# 适用于 Linux 的视频壁纸。用 Python 编写
# sudo flatpak install flathub -y io.github.jeffshee.Hidamari


# ============================
# 第十一步：安装性能监控工具
# ============================
echo "📊 安装 htop、neofetch、glances（系统监控）..."
sudo dnf install -y \
    git wl-clipboard \
    vim wget curl htop \
    unzip p7zip \
    fastfetch \
    timeshift \
    evolution vlc obs-studio \
    gnome-tweaks \
    gnome-extensions-app \
    libreoffice-langpack-zh-Hans \
    vagrant VirtualBox virtualbox-guest-additions


# ============================
# 第十二步：提示用户重启并完成设置
# ============================
echo ""
echo "🎉 优化已完成！"
echo ""
echo "📌 建议操作："
echo "1. 重启电脑，让所有设置生效。"
echo "2. 打开 Firefox → about:config → 搜索 'webrender'，确认是否启用。"
echo "3. 在 GNOME Settings 中启用 'Dark Theme' 或安装主题扩展。"
echo "4. 使用 'Ctrl+Alt+Shift+R' 录屏测试。"
echo ""
echo "💡 你的 AMD Radeon 680M 已支持 H.264、HEVC、VP9、AV1 硬件解码，可流畅播放 4K 视频！"
echo ""

# 提示结束
exit 0
